//
//  SpeakerUtil.swift
//  Pods
//
//  Created by HONOR on 2025/5/7.
//
import AVFAudio


class SpeakerUtil {
    
    
    /// 切换到语音通话模式（听筒/扬声器）
        /// - Parameters:
        ///   - useSpeaker: true=强制扬声器，false=听筒
        static func switchToVoiceChatMode(useSpeaker: Bool) {
            let session = AVAudioSession.sharedInstance()
            do {
                // 语音通话专用配置（自动启用回声消除）
                try session.setCategory(
                    .playAndRecord,
                    mode: .voiceChat,
                    options: [.allowBluetooth, .duckOthers] // 允许蓝牙设备，压低其他音频
                )
                
                if useSpeaker {
                    try session.overrideOutputAudioPort(.speaker)
                } else {
                    try session.overrideOutputAudioPort(.none) // 恢复听筒
                }
                
                try session.setActive(true)
                
                if !useSpeaker {
                    Toast.show(message: "听筒播放，靠近耳朵聆听")
                }
                
            } catch {
                print("⚠️ 语音模式切换失败: \(error.localizedDescription)")
            }
        }
        
        /// 切换到媒体播放模式（自动选择扬声器/耳机）
        static func switchToMediaPlayback() {
            let session = AVAudioSession.sharedInstance()
            do {
                // 媒体播放配置（高音质，支持蓝牙A2DP）
                try session.setCategory(
                    .playback, // 纯播放模式
                    mode: .moviePlayback,
                    options: [.allowBluetoothA2DP, .allowAirPlay] // 支持高质量蓝牙设备
                )
                
                // 重要：取消之前的音频端口覆盖
                try session.overrideOutputAudioPort(.none)
                
                try session.setActive(true)
                
                Toast.show(message: "扬声器播放")
            } catch {
                print("⚠️ 媒体模式切换失败: \(error.localizedDescription)")
            }
        }
        
        /// 恢复默认配置（非活跃状态）
        static func releaseAudioSession() {
            let session = AVAudioSession.sharedInstance()
            do {
                try session.setActive(false, options: .notifyOthersOnDeactivation)
            } catch {
                print("⚠️ 释放音频会话失败: \(error)")
            }
        }
    
}
